C#+VTK显示点云 您所在的位置:网站首页 vtk 点云颜色 C#+VTK显示点云

C#+VTK显示点云

2023-11-15 07:10| 来源: 网络整理| 查看: 265

PS:第一次处理点云,记录一下。

基础环境:VS(我用的2019 ,之前用2012离线版报错了) 话不多说,先上效果图: 在这里插入图片描述 效果肯定没有CloudCompare好,但是能处理就行了,这个视窗按住鼠标中键是平移,左键拖动是旋转,设计有点反人类

具体实现步骤如下 第一步: 新建一个Win From窗体,用于放置控件。 (这个我就不放图了) 第二步: 通过Nuget包管理工具下载VTK的库 在这里插入图片描述 安装完在项目的引用里会多两个DLL 在这里插入图片描述 第三步: 当有了这两个DLL后,去工具箱的控件里找renderWindowControl控件,把它拖到winfrom 桌面,再放一个button 按钮,以方便验证程式 在这里插入图片描述 最后调用库里的IO类,去读写点文件,并显示出来,源码如下:

private void ReadPlainText() { // Path to vtk data must be set as an environment variable // VTK_DATA_ROOT = "C:\VTK\vtkdata-5.8.0" vtkTesting test = vtkTesting.New(); string root = test.GetDataRoot(); //string filePath = System.IO.Path.Combine(root, @"Data\teapot.xyz"); string filePath = System.IO.Path.Combine(@"test2.xyz"); FileStream fs = null; StreamReader sr = null; String sLineBuffer; String[] sXYZ; char[] chDelimiter = new char[] { ' ', '\t', ';' }; double[] xyz = new double[3]; vtkPoints points = vtkPoints.New(); int cnt = 0; try { // in case file must be open in another application too use "FileShare.ReadWrite" fs = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); sr = new StreamReader(fs); while (!sr.EndOfStream) { sLineBuffer = sr.ReadLine(); cnt++; sXYZ = sLineBuffer.Split(chDelimiter, StringSplitOptions.RemoveEmptyEntries); if (sXYZ == null || sXYZ.Length MessageBox.Show(ex.Message, "IOException", MessageBoxButtons.OK); } finally { if (sr != null) { sr.Close(); sr.Dispose(); sr = null; } } }

PS:大家也可以去官方原网站学习,里面也有C#的范例 官方地址:https://kitware.github.io/vtk-examples/site/CSharp/IO/ReadPLY/



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有